/* eslint-disable prefer-const */
/* eslint-disable brace-style */
import goods from '@/data/goods.js'

const cart = {
  namespaced: true,
  state () {
    return {
      items: goods // 使用导入的goods对items进行初始化
    }
  },
  mutations: {
    pushItemToCart (state, g) {
      state.items.push(g)
    },
    deleteItem (state, id) {
      // 根据提交的id载荷，查找是否存在相同id的商品，返回商品的索引
      let index = state.items.findIndex(item => item.id === id)
      if (index >= 0) {
        state.items.splice(index, 1)
      }
    },
    incrementItemCount (state, { id, count }) {
      let item = state.items.find(item => item.id === id)
      if (item) {
        item.count += count // count为1，则加一，count为-1，则减一
      }
    }
  },
  getters: {
    cartItemPrice (state) {
      return function (id) {
        let item = state.items.find(item => item.id === id)
        if (item) {
          return item.price * item.count
        }
      }
    },
    cartTotalPrice (state) {
      return state.items.reduce((total, item) => {
        return total + item.price * item.count
      }, 0)
    }
  },
  actions: {
    addItemToCart (context, g) {
      let item = context.state.items.find(item => item.id === g.id)
      // 如果添加的商品已经在购物车中存在，则只增加购物车中商品的数量
      if (item) {
        context.commit('incrementItemCount', g)
      }
      // 如果添加的商品是新商品，则加入到购物车中
      else {
        context.commit('pushItemToCart', g)
      }
    }
  }
}

export default cart
